home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Extra 1996 #2 / Amiga Plus CD - 1996 - No. 2 Extra.iso / clarissa1_1-demo / macros / loadin.clssa < prev    next >
Text File  |  1995-01-20  |  8KB  |  321 lines

  1. /***********************************************************************
  2.  GADGET: "'Laden'" "1" AUTO TYP: "?"
  3.  
  4.  $DAT >>LoadIn.clssa<<        27.11.1993 - (C) ProDAD Holger Burkarth
  5.                               20.01.1995 - (C) ProDAD Michael Christoph
  6. ************************************************************************/
  7.  
  8. Options RESULTS
  9. Address clariSSA
  10. ARG InputVar
  11.  
  12.   FailAt 11
  13.   AltFail=RESULT
  14.  
  15.   SetPref "SCREENS OFF"
  16.  
  17.  
  18.   DO FOREVER
  19.     WorkAnim2=""
  20.     WorkAnim=GetAnimReg("")
  21.     IF WorkAnim="" THEN LEAVE
  22.  
  23.     F_NewAnim=1
  24.     GetAnimInfo Master
  25.     IF RESULT~="" THEN DO
  26.       MSRequester "TITLE '*** Laden ***'",
  27.                         "''",
  28.                         "'Animationsregister MASTER ist bereits belegt.'",
  29.                   "PTEXT 'Animation an die MASTER anhängen bzw. erweitern'",
  30.                         "'MASTER neu anlegen (alte Animation entfernen)'",
  31.                         "'** Abbruch **'"
  32.       IF RC~=0 | RESULT>2 THEN LEAVE
  33.       F_NewAnim=0
  34.       IF RESULT=2 THEN DO
  35.         F_NewAnim=1
  36.         CloseAnim Master
  37.         IF RC~=0 THEN LEAVE
  38.       END
  39.     END
  40.  
  41.  
  42.  
  43.     GetPref
  44.     PARSE VAR RESULT . "NAME" '"'Datei'"' .
  45.     PrefFile='"'Datei'"'
  46.  
  47.     Mode_Auto=0
  48.     Mode_REQ=0
  49.     DO FOREVER
  50.       PARSE VAR InputVar com InputVar
  51.       IF com="" THEN LEAVE
  52.       IF com="AUTO" THEN Mode_Auto=1;
  53.       ELSE IF com="REQ" THEN Mode_REQ=1;
  54.       ELSE IF com="NAME" THEN DO
  55.         PARSE VAR InputVar '"'Datei'"'
  56.         PrefFile='"'Datei'"'
  57.       END
  58.     END
  59.  
  60.     IF Mode_Auto=1 THEN DO
  61.       Datei=PrefFile
  62.     END
  63.     ELSE DO
  64.       SetBasicScreen Front
  65.       FileSelect "Name" PrefFile "TITLE 'Wählen Sie die zu ladende Datei' PTEXT 'Laden'"
  66.       IF RC~=0 THEN LEAVE
  67.       Datei='"'RESULT'"'
  68.     END
  69.  
  70.  
  71.  
  72.     ret=RunA(Datei,F_NewAnim,WorkAnim)
  73.  
  74.     LEAVE
  75.   END
  76.  
  77.   SetPref "SCREENS ON"
  78.   RequestStatus ON
  79.  
  80.   FailAt AltFail
  81. exit
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. /*------------------------------------------------
  89. Hauptroutine
  90. -------------------------------------------------*/
  91. RunA: procedure
  92. DO
  93.   ARG Datei,F_NewAnim,WorkAnim
  94.  
  95.   IF F_NewAnim=1 THEN F_SetName=1
  96.   ELSE                F_SetName=0
  97.  
  98.   IF GetVersion()="P" THEN DO
  99.     PV=1
  100.     SetPref HBComp OFF  LaceCompensation ON
  101.   END
  102.   ELSE DO
  103.     PV=0
  104.     SetPref LaceCompensation ON
  105.   END
  106.  
  107.   DO FOREVER
  108.     GetFileInfo "NAME" Datei
  109.     IF RC~=0 THEN DO
  110.       Message "'Unbekanntes Dateiformat'"
  111.       LEAVE
  112.     END
  113.  
  114.     PARSE VAR RESULT ."ID" AnimID . "FORMAT" ex ey et "VIEWMODE" eViewMode "FRAMES" frames .
  115.     MAnimID=AnimID
  116.  
  117.     IF AnimID='MDHD' THEN F_SetName=0
  118.  
  119.     f_F=0
  120.     IF CheckAnimIDChange(AnimID,1)=1 THEN DO
  121.       MSRequester "TITLE '*** Laden ***'",
  122.                         "''",
  123.                         "'FORMAT: "MAnimID "-" ex ey et eViewMode "'",
  124.                         "''",
  125.                         "'Ausgewählte Datei ist keine SSA-Animation.'",
  126.                         "'Soll die Datei in das SSA-Format umgewandelt werden?'",
  127.                   "PTEXT 'Umwandlung in SSA'",
  128.                         "'Ohne Umwandlung einladen'",
  129.                         "'** Abbruch **'"
  130.       IF RC~=0 | RESULT>2 THEN LEAVE
  131.       IF RESULT=1 THEN f_F=1
  132.     END
  133.  
  134.  
  135.     IF ( f_F=1 ) | ((F_NewAnim=0) & (AnimID~='MDHD')) THEN DO
  136.       F_FrameSeq=0
  137.       F_OneFrame=0
  138.       IF frames=1 THEN F_SingleFrame=1; ELSE F_SingleFrame=0
  139.  
  140.  
  141.       IF F_NewAnim=1 THEN DO
  142.           IF F_FrameSeq=0 & INDEX(eViewMode,"LACE")>0 THEN DO
  143.             IF CheckAnimIDChange(AnimID,2)=1 THEN DO
  144.               MSRequester "TITLE '*** Laden ***'",
  145.                                 "''",
  146.                                 "'FORMAT: "MAnimID "-" ex ey et eViewMode "'",
  147.                                 "''",
  148.                                 "'Animation beinhaltet LACE und kann mit'",
  149.                                 "'50/60Hz abgespielt werden.'",
  150.                                 "'Soll die Animation flimmerfrei mit kleineren'",
  151.                                 "'Geschwindigkeiten darstellbar sein, so muß'",
  152.                                 "'der HB-Kompensator zugeschaltet werden.'",
  153.                           "PTEXT 'normal einladen'",
  154.                                 "'mit HB-Kompensator einladen'",
  155.                                 "'** Abbruch **'"
  156.               IF RC~=0 | RESULT>2 THEN LEAVE
  157.               IF      RESULT=1 THEN SetPref "HBComp OFF LaceCompensation ON"
  158.               ELSE IF RESULT=2 THEN SetPref "HBComp ON  LaceCompensation OFF"
  159.             END
  160.         END
  161.  
  162.         IF F_FrameSeq=1 THEN AnimID="ILBM"
  163.         ELSE                 AnimID="SSA "
  164.  
  165.  
  166.         IF INDEX(eViewMode,"LACE")=0 & AnimID~="ILBM" THEN DO
  167.           IF MS_NoLace()=1 THEN LEAVE
  168.         END
  169.  
  170.         OpenAnim "MASTER ID" AnimID "FORMAT" ex ey et "VIEWMODE" eViewMode
  171.         IF RC~=0 THEN LEAVE
  172.       END
  173.  
  174.  
  175.       IF F_SingleFrame=1 THEN DO
  176.         INTRequest "'Geben Sie die Anzahl'",
  177.                    "'der vorhandenen Bilder ein.' 1"
  178.         FrameCount=RESULT
  179.         IF RC~=0 | FrameCount<1 THEN LEAVE
  180.         LoadAnim "MASTER NAME" Datei "FRAMES" FrameCount
  181.         SelectAnim MASTER
  182.         SetArea FULL
  183.       END
  184.       ELSE DO
  185.         LoadAnim WorkAnim "NAME" Datei
  186.         IF RC~=0 THEN LEAVE
  187.         RequestStatus OFF
  188.         Record Area
  189.         IF RC~=0 THEN LEAVE
  190.         CloseAnim WorkAnim
  191.         SelectAnim MASTER
  192.       END
  193.  
  194.     END
  195.     ELSE LoadAnim "MASTER NAME" Datei
  196.  
  197.  
  198.     IF F_SetName=1 THEN DO
  199.       PARSE VAR Datei '"'Datei'"'
  200.       IF Length(Datei)>34 THEN Datei=Right(Datei,34)
  201.       /*??? SetMAnimList "NAME" "'"Datei"'"*/
  202.     END
  203.     LEAVE
  204.   END
  205.  
  206.   RETURN(RC)
  207. END
  208.  
  209.  
  210.  
  211. /*------------------------------------
  212. Freies Animationsregister ermitteln.
  213. -------------------------------------*/
  214. GetAnimReg: procedure
  215. DO
  216.   ARG IReg
  217.  
  218.   WorkAnim=""
  219.   DO FOREVER
  220.     WorkAnim="SOURCE_A"
  221.     IF IReg~=WorkAnim & TestReg(WorkAnim)=0 THEN LEAVE
  222.     WorkAnim="SOURCE_B"
  223.     IF IReg~=WorkAnim & TestReg(WorkAnim)=0 THEN LEAVE
  224.     WorkAnim="SOURCE_C"
  225.     IF IReg~=WorkAnim & TestReg(WorkAnim)=0 THEN LEAVE
  226.     WorkAnim="SOURCE_D"
  227.     IF IReg~=WorkAnim & TestReg(WorkAnim)=0 THEN LEAVE
  228.     WorkAnim=""
  229.     LEAVE
  230.   END
  231.  
  232.   IF WorkAnim="" THEN DO
  233.     a=""
  234.     WorkAnim="SOURCE_A"
  235.     IF IReg~=WorkAnim THEN a=a WorkAnim
  236.     WorkAnim="SOURCE_B"
  237.     IF IReg~=WorkAnim THEN a=a WorkAnim
  238.     WorkAnim="SOURCE_C"
  239.     IF IReg~=WorkAnim THEN a=a WorkAnim
  240.     WorkAnim="SOURCE_D"
  241.     IF IReg~=WorkAnim THEN a=a WorkAnim
  242.  
  243.  
  244.     SelectAnim a,
  245.                "TITLE 'Wählen Sie ein Source-Register zur@Zwischenspeicherung aus.'",
  246.                "REQ"
  247.     IF RC > 1 THEN BREAK
  248.     WorkAnim=RESULT
  249.     CloseAnim WorkAnim
  250.     IF RC > 1 THEN BREAK
  251.   END
  252.  
  253.   RETURN (WorkAnim)
  254. END
  255.  
  256.  
  257.  
  258. TestReg: procedure
  259. DO
  260.   ARG Reg
  261.  
  262.   GetAnimInfo Reg
  263.   IF RESULT~="" THEN RETURN(1)
  264.  
  265.   RETURN (0)
  266. END
  267.  
  268.  
  269.  
  270. GetVersion: procedure
  271. DO
  272.   Information
  273.   PARSE VAR RESULT . "VERSION:" cl .
  274.   RETURN (cl)
  275. END
  276.  
  277.  
  278.  
  279. CheckAnimIDChange: procedure
  280. DO
  281.   ARG ID,Mode
  282.  
  283.   IF Mode=1 THEN DO
  284.     /*??? IF ID='MDHD' | ID='SSA ' | ID='SSAD' | ID='SSA5' THEN RETURN(0)*/
  285.     IF ID='MDHD' | ID='SSA ' THEN RETURN(0)
  286.     ELSE RETURN(1)
  287.   END
  288.   ELSE IF Mode=2 THEN DO
  289.     IF ID='ADO1' THEN RETURN(0)
  290.     ELSE RETURN(1)
  291.   END
  292.  
  293.   RETURN (0)
  294. END
  295.  
  296.  
  297.  
  298. MS_NoLace: procedure expose MAnimID ex ey et eViewMode
  299. DO
  300.  
  301.   MSRequester "TITLE '*** Laden ***'",
  302.                     "''",
  303.                     "'FORMAT: "MAnimID "-" ex ey et eViewMode "'",
  304.                     "''",
  305.                     "'Animation beinhaltet kein LACE => NICHT ABSPIELBAR'",
  306.               "PTEXT 'Umwandlung in LACE + Korrektur (Verhältnis)'",
  307.                     "'Umwandlung in LACE (Bild verkleinert sich)'",
  308.                     "'** Abbruch **'"
  309.  
  310.   IF RC~=0 | RESULT>2 THEN RETURN(1)
  311.   IF      RESULT=1 THEN DO
  312.     SetPref "HBComp OFF LaceCompensation ON"
  313.     ey=ey*2
  314.   END
  315.   ELSE IF RESULT=2 THEN SetPref "HBComp OFF  LaceCompensation OFF"
  316.   eViewMode=eViewMode "LACE"
  317.  
  318.  
  319.   RETURN (0)
  320. END
  321.